package model

import (
	"github.com/hwUltra/fb-tools/gormx"
	"strings"
)

type SysRegionModel struct {
	Id         int64  `gorm:"primaryKey" json:"id"`
	RegionCode int64  `gorm:"column:region_code;" json:"regionCode"`
	ParentCode int64  `gorm:"column:parent_code;" json:"parentCode"`
	RegionName string `gorm:"column:region_name;" json:"regionName"`
}

// TableName SysRegion's table name
func (*SysRegionModel) TableName() string {
	return "sys_region"
}

const CacheSysRegionListKey = "Cache:SysRegionModel:List"

type SysRegionCache gormx.GormCache

func (m *SysRegionCache) List() []*SysRegionModel {

	items := make([]*SysRegionModel, 0)
	_ = m.Cache.Take(&items, CacheSysRegionListKey, func(val any) error {
		return m.Db.Model(&SysRegionModel{}).
			Order("id asc").Find(&items).Error
	})

	return items
}

func (m *SysRegionCache) Update(u *SysRegionModel) error {
	if err := m.Cache.Del(CacheSysRegionListKey); err != nil {
		return err
	}
	return m.Db.Save(&u).Error
}

func (m *SysRegionCache) Del(idStr string) error {
	if err := m.Cache.Del(CacheSysRegionListKey); err != nil {
		return err
	}
	return m.Db.Delete(&SysRegionModel{}, strings.Split(idStr, ",")).Error
}
